Tag Archives : URI routing

webapp2の公式ドキュメントを読む会もとうとう6回目になりました。

今回で、やっとURL routingが終了です。

Path prefix routes

何度も同じ記述を避けるための記載方法です。

リクエストをグループ化して定義する事ができるようになります。

 

app = WSGIApplication([
    Route('/users/<user:\w+>/', UserOverviewHandler, 'user-overview'),
    Route('/users/<user:\w+>/profile', UserProfileHandler, 'user-profile'),
    Route('/users/<user:\w+>/projects', UserProjectsHandler, 'user-projects'),
])



import webapp2
from webapp2_extras import routes

app = WSGIApplication([
    routes.PathPrefixRoute('/users/<user:\w+>', [
        webapp2.Route('/', UserOverviewHandler, 'user-overview'),
        webapp2.Route('/profile', UserProfileHandler, 'user-profile'),
        webapp2.Route('/projects', UserProjectsHandler, 'user-projects'),
    ]),
])

PathPrefixRouteは、記載の仕方だけでなく、処理効率も上がるそうです。

通常は、定義されたRouteを順番にマッチングしながら処理を行うのですが、PathPrefixRouteに一致しなかった場合は、全てスキップするため無駄なマッチングをせずに済むようです。

続きを読む...


posted in: GAE and tagged as: webapp2 | python | タネマキ | URI routing | 読書会

今回も、横浜のコワーキングスペース「タネマキ」で、GAE/Pの勉強会を行いました。

その勉強会の中で、webapp2の公式ドキュメントを読み解く会を継続して行なっています。

今回は、URL routingの以下の項目からスタートです。

The URL template

これを使うと、リクエストURLのパターンマッチングが出来るようになります。

FormatExample
<name> '/blog/<year>/<month>'
<:regex> '/blog/<:\d{4}>/<:\d{2}>'
<name:regex> '/blog/<year:\d{4}>/<month:\d{2}>'
 

handler側でのパラメータの受け取り。

 handler側では、パラメータとして以下のように受け取ることが出来ます。

 nameありの場合は、**kwargsで受け取る
 nameなしの場合は、*argsで受け取る

※nameありとnameなしの混在について

 name ありとnameなしの混在とした場合は、
 nameを付けた項目のみ、**kwargs で受け取ることが可能。
 nameを付けていない項目は、パターンマッチングには利用できるが、handlerでは受け取ることはできない。

以下は、公式サイトのサンプルソース

Route('/<user_id>/settings', handler=SettingsHandler, name='user-settings')
Route('/<user_id:[^/]+>/settings', handler=SettingsHandler, name='user-settings')

続きを読む...


posted in: GAE and tagged as: webapp2 | python | タネマキ | URI routing | 読書会

前回までで、The WSGI applicationが終了し(1ページで3回もかかりましたが。。)今回からは、次の項目の、URI routingに入ります。

URI routing 

URI routingは、main.pyなどでリクエストに対して、どのhandlerを割り当てるかなどを設定する部分です。

以下の様な記載をする部分です。

app = webapp2.WSGIApplication([
 (r'/', HomeHandler),
])

webapp2では、webapp(python2.5)での記述を引き継ぎつつ、新しい協力な機能が追加されています。

続きを読む...


posted in: GAE and tagged as: webapp2 | python | タネマキ | URI routing | 読書会



PAGE TOP